﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Platform.Storage.Redis.Messages
{
	/// <summary>
	/// Representa uma mensagem (comando) enviado para o REDIS
	/// </summary>
	public interface IRedisMessage
	{
		/// <summary>
		/// Método chamado quando o canal de comunicação com o redis enviou 
		/// a resposta do comanda. A implementação da mensagem é responsável
		/// por fazer a leitura correta
		/// </summary>
		/// <param name="reader"></param>
		void ReadReply( TextReader reader );

		/// <summary>
		/// Obtém o tamanho da mensagem retornada pelo REDIS
		/// </summary>
		//int ReplyLength
		//{ get; }

		/// <summary>
		/// Converte para string o comando que será enviado para o REDIS
		/// </summary>
		/// <returns></returns>
		string ToWireMessage();
	}

}
